photo-gallery - 2 - filterable

revision:


Select:
code:
    <div class="container">Select:
        <ul class="filter-menu"> 
          <li data-target="all">All</li>
          <li data-target="male">Male</li>
          <li data-target="female">Female</li>
          <li data-target="car">Car</li>
        </ul>
        <ul class="filter-item">
            <li data-item="male"><img src="../images/einstein.jpg" alt=""></li>
            <li data-item="male"><img src="../images/tesla.jpg" alt=""></li>
            <li data-item="female"><img src="../images/4a.jpg" alt=""></li>
            <li data-item="female"><img src="../images/cartoon.jpg" alt=""></li>
            <li data-item="car"><img src="../images/car1.jpg" alt=""></li>
            <li data-item="car"><img src="../images/car2.jpg" alt=""></li>
            <li data-item="car"><img src="../images/19.jpg" alt=""></li>
            <li data-item="car"><img src="../images/17.jpg" alt=""></li>
            <li data-item="male"><img src="../images/hemingway.jpg" alt=""></li>
            <li data-item="male"><img src="../images/malcom-x.jpg" alt=""></li>
        </ul>
    </div> 
    <style>
      ul{list-style: none;}
      .filter-item img{max-width: 100%;height: auto;}
      .container{max-width: 99vw; margin: auto; padding: 1vw; text-align: left;}
      .filter-menu{margin-bottom: 20px;}
      .filter-menu li{display: inline-block; padding: 10px 18px; background: #eb4d4b; color: #fff; cursor: pointer;}
      .filter-menu li:hover, .filter-menu li.current{ background: #ff7979;}
      .filter-item{display: flex; flex-flow: row wrap;}
      .filter-item li{ width: 25%; padding: 2px; float: left;}
      .filter-item li.active{width: 50%; padding: 2px; transition: all 0.5s ease;}
      .filter-item li.delete{width: 0%; padding: 0; transition: all 0.5s ease;}
      .filter-item img{display: block; width: 100%; height: auto;}
      @media screen and (min-width: 768px){
          .filter-item li.active, .filter-item li{ width: 33.33%; }
          h2{font-size: 190%;}
      }
      @media screen and (min-width: 1280px){
          .filter-item li.active, .filter-item li{width: 25%;}
          h2{font-size: 270%;}
      }
    </style>
    <script>
        let sortBtn = document.querySelector('.filter-menu').children;
        let sortItem = document.querySelector('.filter-item').children;
        for(let i = 0; i < sortBtn.length; i++){
            sortBtn[i].addEventListener('click', function(){
                for(let j = 0; j< sortBtn.length; j++){
                    sortBtn[j].classList.remove('current');
                }
                this.classList.add('current');
                let targetData = this.getAttribute('data-target');
  
                for(let k = 0; k < sortItem.length; k++){
                    sortItem[k].classList.remove('active');
                    sortItem[k].classList.add('delete');
  
                    if(sortItem[k].getAttribute('data-item') == targetData || targetData == "all"){
                        sortItem[k].classList.remove('delete');
                        sortItem[k].classList.add('active');
                    }
                }
            });
        }
    </script>